package 中等.搜索.广度优先搜索;

import util.TreeNode;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * 给定一个二叉树的 根节点 root，请找出该二叉树的 最底层 最左边 节点的值。
 * 假设二叉树中至少有一个节点。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/find-bottom-left-tree-value/
 */
public class 找树左下角的值_513 {

    public static void main(String[] args) {

    }

    public int findBottomLeftValue(TreeNode root) {
        int ans = root.val;
        Deque<TreeNode> queue = new ArrayDeque<>();
        queue.addLast(root);

        while (!queue.isEmpty()) {
            int size = queue.size();
            ans = queue.peekFirst().val;
            while (size-- > 0) {
                TreeNode curNode = queue.pollFirst();
                if (curNode.left != null) queue.addLast(curNode.left);
                if (curNode.right != null) queue.addLast(curNode.right);
            }
        }
        return ans;
    }

}
